package map;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;

import errors.KeyNotFoundException;
import foreground.Foreground;

/**rappresenta uno Stratum basato su una mappa
 * 
 * @author Koldar
 * @version 1.0
 */
@Deprecated
public final class MapStratum extends Stratum<HashMap<String,Foreground>>{

	/**costruisce il nuovo gestore degli strati della mappa in
	 * modo da non avere ancora alcun spazio contenuto
	 * 
	 */
	public MapStratum(){
		super();
		this.stratiLevels=new Vector<HashMap<String,Foreground>>(0,1);
	}
	
	/**costruisce il nuovo gestore degli strati in modo che
	 * contenga all'inizio la mappa passata
	 * 
	 * @param oldmap il primo strato da inserire
	 */
	public MapStratum(HashMap<String, Foreground> oldmap){
		this();
		this.stratiLevels=new Vector<HashMap<String,Foreground>>();
		this.addStratum(oldmap);
	}
	
	/**costruisce il nuovo gestore degli strati in modo che abbia
	 * gli stessi strati di quello passato come parametro
	 * 
	 * @param oldstrati il modello da copiare
	 */
	public MapStratum(MapStratum oldstrati){
		this();
		this.stratiLevels=oldstrati.stratiLevels;
	}
	
	/**ritorna il foreground con la determinata chiave <tt>key</tt> o un'eccezione
	 * se tale chiave non è presente nell'archivio
	 * 
	 * @param key
	 * @return
	 * @throws KeyNotFoundException
	 */
	public Foreground getForeground(String key) throws KeyNotFoundException{
		for (HashMap<String, Foreground> m: this.stratiLevels){
			if (m.containsKey(key)){
				return m.get(key);
			}
		}
		throw new KeyNotFoundException(key);
	}
	
	/**
	 * 
	 * @return il numoro di strati contenuti nella mappa
	 */
	public int getstratiLevels(){
		return this.stratiLevels.size();
	}
}
